package com.swanclouds.api.systems;

import com.swanclouds.api.chassis.PCIeDeviceService;
import com.swanclouds.common.RestService;
import com.swanclouds.model.common.ActionResponse;
import com.swanclouds.model.systems.ModifySystemReq;
import com.swanclouds.redfish.common.redfish.FruControl;
import com.swanclouds.redfish.common.redfish.ResetType;
import com.swanclouds.redfish.systems.domain.Systems;

/**
 * 查询系统资源实例
 * 查看计算机系统中的单个实例。查询服务器资产编码、主机名、制造厂商、型号、序列号、BIOS版本
 *
 * @author 张立强 
 */
public interface SystemService extends RestService {

    /**
     * 查询系统资源实例
     * @return Systems
     */
    Systems get();

    /**
     * 修改指定系统资源属性
     * @param modify 修改体
     * @return the Systems
     */
    Systems modify(ModifySystemReq modify);
    /**
     * 服务器开关机操作
     * @param resetType 状态
     * @return ActionResponse
     */
    ActionResponse ComputerSystemReset(ResetType resetType);

    /**
     * 华为 FRU上下电控制
     * @param fruControl 状态
     * @return ActionResponse
     */
    ActionResponse ComputerSystemFruControl(FruControl fruControl);

    /**
     * 查询 CPU 集合资源信息服务
     * @return ProcessorService
     */
    ProcessorService Processor();

    /**
     * 查询 内存 集合资源信息服务
     * @return MemoryService
     */
    MemoryService Memory();

    /**
     * 查询存储集合资源信息服务
     * @return StorageService
     */
    StorageService Storage();

    /**
     * BIOS资源信息服务
     * @return BiosService
     */
    BiosService Bios();

    /**
     * @return 日志服务集合资源服务
     */
    LogServices Logs();

    EthernetInterfaceService EthernetInterface();

    NetworkInterfaceService NetworkInterface();

    PCIeDeviceService PCIeDevice();

    PCIeFunctionService PCIeFunction();

    NetworkBondService Bond();

    Boolean supportProcessorService();
    Boolean supportMemoryService();
    Boolean supportStorageService();
    Boolean supportBiosService();
    Boolean supportEthernetInterfaceService();
    Boolean supportNetworkInterfaceService();
    Boolean supportLogServices();

}
